首页 > 试题广场 >

编辑距离(二)

[编程题]编辑距离(二)
  • 热度指数:37089 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个字符串str1和str2,再给定三个整数ic,dc和rc,分别代表插入、删除和替换一个字符的代价,请输出将str1编辑成str2的最小代价。

数据范围:
要求:空间复杂度 ,时间复杂度
示例1

输入

"abc","adc",5,3,2

输出

2
示例2

输入

"abc","adc",5,3,100

输出

8

备注:

function minEditCost( str1 , str2 , ic , dc , rc ) {
// write code here
let len1 = str1.length, len2 = str2.length;
let dp = new Array(len2 + 1).fill(0);
for(let i = 1; i <= len2; i++) {
dp[i] = i * ic;
}
for(let i = 1; i <= len1; i++) {
let pre = dp[0];
dp[0] = i * dc;
for(let j = 1; j <= len2; ++j) {
let tmp = dp[j];
if(str1[i - 1] === str2[j - 1]) dp[j] = pre;
else dp[j] = Math.min(pre + rc, dp[j - 1] + ic, tmp + dc);
pre = tmp;
}
}
return dp[len2];
}
发表于 2024-03-06 18:34:07 回复(0)